<script setup lang="ts">
  import type { HTMLAttributes } from 'vue'
  import { cn } from '@renderer/lib/utils'
  import { Primitive, type PrimitiveProps } from 'reka-ui'
  import { type ButtonVariants, buttonVariants } from '.'

  interface Props extends PrimitiveProps {
    variant?: ButtonVariants['variant']
    size?: ButtonVariants['size']
    class?: HTMLAttributes['class']
  }

  const props = withDefaults(defineProps<Props>(), {
    as: 'button'
  })
</script>

<template>
  <Primitive
    data-slot="button"
    :as="as"
    :as-child="asChild"
    :class="cn(buttonVariants({ variant, size }), props.class)"
  >
    <slot />
  </Primitive>
</template>
